/*
 * Copyright (c) 2011 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.snj.visangedu.calendar;

import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.ScrollView;

/**
 * @author AA@google.com (Your Name Here)
 *
 */
public class ResizeAnimation extends Animation {
  private static final String TAG = "StudyPlan";
  final int startWidth;
  final int targetWidth;
  final int startHeight;
  final int targetHeight;
  View view;

  ScrollView scrView;
  int scrX, scrY;


  public ResizeAnimation(View view, int sW, int tW, int sH, int tH) {
    this.view = view;

    this.startWidth = sW;
    this.targetWidth = tW;
    this.startHeight = sH;
    this.targetHeight = tH;

    if (view.getVisibility() == View.GONE) {
      view.setVisibility(View.VISIBLE);
    }

    view.getLayoutParams().height = startHeight;
    view.requestLayout();
  }

  public void SetScrollViewUpdate(ScrollView scr, int x, int y) {
    scrView = scr;
    scrX = x;
    scrY = y;
  }

  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
    int newWH = 0;
    if (targetWidth != 0) {
      // if (startWidth < targetWidth)
      newWH = (int) (startWidth + (targetWidth - startWidth) * interpolatedTime);
      // else
      // newWH = targetWidth - (int) (startWidth + (targetWidth - startWidth) * interpolatedTime);

      // Log.d(TAG, "ani width = " + newWH);

      view.getLayoutParams().width = newWH;
    }

    if (targetHeight != 0) {

      // if (startHeight < targetHeight)
      newWH = (int) (startHeight + (targetHeight - startHeight) * interpolatedTime);
      // else
      // newWH =
      // (int) (targetHeight -(startHeight + (targetHeight - startHeight)) * interpolatedTime);

      // Log.d(TAG, "ani height = " + newWH);
      if (targetHeight == 1 && newWH < 10) {
        if (view.getVisibility() == View.VISIBLE) {
          view.setVisibility(View.GONE);
        }
        return;
      }

      view.getLayoutParams().height = newWH;
    }
    view.requestLayout();

    if (scrView != null) scrView.scrollTo(scrX, scrY);
  }

  @Override
  public void initialize(int width, int height, int parentWidth, int parentHeight) {
    super.initialize(width, height, parentWidth, parentHeight);
  }

  @Override
  public boolean willChangeBounds() {
    return true;
  }
}
